'use strict'

const http=require('http')
/*
.jpg .jepg ->image/jpeg

.png ->image/png

.gif->image/gif

.ico ->image/x-icon

.txt->text/plain

.json->text/json或application/json

.xml->text/xml 或application/xml

*/ 
let html=`
<!DOCTYPE html>
<html>
<head>
    <title>First HTTP</title>
</head>
<body>
    你好
</body>
</html>
`
let routerTable={
    '/':async(request,response)=>{
        response.setHeader('content-type','text/html; charset=utf-8')
        response.end(html)
    },
    '/test':async(request,response)=>{
        let status=parseInt(Math.random()*200)+199
        response.statusCode=status
        response.end('test end')
    },
    '/data':async(request,response)=>{
        let bufferList=[]
        let bufferLength=0
    
        request.on('data',chunk=>{
            bufferLength +=chunk.length
            bufferLength.push(chunk)
        })
        let bodyData=null
        request.on('end',()=>{
            if(bufferList.length>0){
                bodyData=Buffer.concat(bufferList,bufferLength)
                bufferList=[]
            }
            if(bodyData){
                response.end(bodyData)
            }else{
                response.end()
            }
        })
    }
}
http.createServer((request,response)=>{
   if(!routerTable[request.url]){
       response.statusCode=404
       response.end('page not found')
       return
   }
   routerTable[request.url ](request,response)
})
.listen(3456)